gsk: Add a profile counter for vulkan render passes
authorMatthias Clasen <mclasen@redhat.com>
Thu, 28 Sep 2017 12:29:14 +0000 (08:29 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 28 Sep 2017 12:39:22 +0000 (08:39 -0400)
This is interesting now that we have multiple render passes.

gsk/gskvulkanrender.c
gsk/gskvulkanrenderer.c

index 06b593c42289d189e0277a93c8de48f5ea2662f6..cddc3316457b65a65e224801f1adcd22cd588f2d 100644 (file)
@@ -54,6 +54,8 @@ struct _GskVulkanRender
 
   GList *render_passes;
   GSList *cleanup_images;
+
+  GQuark render_pass_counter;
 };
 
 static void
@@ -204,6 +206,10 @@ gsk_vulkan_render_new (GskRenderer      *renderer,
 
   self->uploader = gsk_vulkan_uploader_new (self->vulkan, self->command_pool);
 
+#ifdef G_ENABLE_DEBUG
+  self->render_pass_counter = g_quark_from_static_string ("render-passes");
+#endif
+
   return self;
 }
 
@@ -284,6 +290,10 @@ gsk_vulkan_render_add_node (GskVulkanRender *self,
 
   self->render_passes = g_list_prepend (self->render_passes, pass);
 
+#ifdef G_ENABLE_DEBUG
+  gsk_profiler_counter_inc (gsk_renderer_get_profiler (self->renderer), self->render_pass_counter);
+#endif
+
   gsk_vulkan_render_pass_add (pass, self, node);
 }
 
@@ -314,6 +324,10 @@ gsk_vulkan_render_add_node_for_texture (GskVulkanRender       *self,
 
   self->render_passes = g_list_prepend (self->render_passes, pass);
 
+#ifdef G_ENABLE_DEBUG
+  gsk_profiler_counter_inc (gsk_renderer_get_profiler (self->renderer), self->render_pass_counter);
+#endif
+
   gsk_vulkan_render_pass_add (pass, self, node);
 }
 
index 661128cc09ead431477d183e50f8d81f124f7b78..7a422dc66d0f87ecf7ecb2417f02a353da8fafd7 100644 (file)
@@ -26,6 +26,7 @@ struct _GskVulkanTextureData {
 #ifdef G_ENABLE_DEBUG
 typedef struct {
   GQuark frames;
+  GQuark render_passes;
   GQuark fallback_pixels;
 } ProfileCounters;
 
@@ -201,6 +202,7 @@ gsk_vulkan_renderer_render_texture (GskRenderer           *renderer,
 #ifdef G_ENABLE_DEBUG
   profiler = gsk_renderer_get_profiler (renderer);
   gsk_profiler_counter_set (profiler, self->profile_counters.fallback_pixels, 0);
+  gsk_profiler_counter_set (profiler, self->profile_counters.render_passes, 0);
   gsk_profiler_timer_begin (profiler, self->profile_timers.cpu_time);
 #endif
 
@@ -247,6 +249,7 @@ gsk_vulkan_renderer_render (GskRenderer   *renderer,
 #ifdef G_ENABLE_DEBUG
   profiler = gsk_renderer_get_profiler (renderer);
   gsk_profiler_counter_set (profiler, self->profile_counters.fallback_pixels, 0);
+  gsk_profiler_counter_set (profiler, self->profile_counters.render_passes, 0);
   gsk_profiler_timer_begin (profiler, self->profile_timers.cpu_time);
 #endif
 
@@ -307,6 +310,7 @@ gsk_vulkan_renderer_init (GskVulkanRenderer *self)
 
 #ifdef G_ENABLE_DEBUG
   self->profile_counters.frames = gsk_profiler_add_counter (profiler, "frames", "Frames", FALSE);
+  self->profile_counters.render_passes = gsk_profiler_add_counter (profiler, "render-passes", "Render passes", FALSE);
   self->profile_counters.fallback_pixels = gsk_profiler_add_counter (profiler, "fallback-pixels", "Fallback pixels", TRUE);
 
   self->profile_timers.cpu_time = gsk_profiler_add_timer (profiler, "cpu-time", "CPU time", FALSE, TRUE);